<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			//输入：nums = [1,2,3]
			//输出：[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
			/**
			 * @param {number[]} nums
			 * @return {number[][]}
			 */
			// const subsets = (nums) => {
			//   let res = [];
			//   const dfs = (index, list) => {
			// 	res.push(list.slice()); // 调用子递归前，加入解集
			//     for (let i = index; i < nums.length; i++) {
			//       // 枚举出所有可选的数
			//       list.push(nums[i]); // 选这个数
			//       dfs(i + 1, list); // 基于选这个数，继续递归，传入的是i+1，不是index+1
			//       list.pop(); // 撤销选这个数
			//     }
			//   };
			//   dfs(0, []);
			//   return res;
			// };
			// console.log(subsets([1,2,3]));
			const subsets = (nums) => {
				let res = [];
				let temp = [];
				let n = nums.length;
				const dfs = (i, list) => {
					if (i == n) {
						console.log(temp)
						res.push([...temp]);
						return;
					}
					dfs(i + 1, list);
					temp.push(nums[i]);
					dfs(i + 1, list);
					temp.pop();
				}
				dfs(0, []);
				return res;
			};
			console.log(subsets([1, 2, 3]));
			// let res = [];
			// function test(i,arr){
			// 	for(;i<=2;i++){
			// 		res.push(arr[i])
			// 		test(i + 1,arr)
			// 	}
			// }
			// test(0,[1,2,3]);
			// console.log(res);
		</script>
	</body>
</html>
